import request from '@/utils/request';
const basePath = '/appsys/profile/ProfileRest';
import type { BaseBeanModel, ResponsePageData, ResponseBaseData, QueryParamModel } from '@/api/model/baseModel';
import type { downloadParam } from '@/utils/download-util';
import { download } from '@/utils/download-util';

export interface SysProfileOptionDto extends BaseBeanModel {
  /** 应用ID */
  sysApplicationId?: string;
  /** 配置文件代码 */
  profileOptionCode?: string;
  /** 配置文件名称 */
  profileOptionName?: string;
  /** 描述 */
  description?: string;
  /** 是否多值Y 是 N 否 */
  ynMultiValue?: string;
  /** 用户可更新标识Y代表可以，N代表不可以，默认为Y */
  userChangeableFlag?: string;
  /** 用户可查看标识Y代表可以，N代表不可以，默认为Y */
  userVisibleFlag?: string;
  /** 地点层可见Y代表可以，N代表不可以，默认为Y */
  siteEnabledFlag?: string;
  /** 应用程序层可见Y代表可以，N代表不可以，默认为Y */
  appEnabledFlag?: string;
  /** 角色层可见Y代表可以，N代表不可以，默认为Y */
  roleEnabledFlag?: string;
  /** 用户层可见Y代表可以，N代表不可以，默认为Y */
  userEnabledFlag?: string;
  /** 部门启用标记Y代表可以，N代表不可以，默认为Y */
  deptEnabledFlag?: string;
  /** SQL校验用于配置文件选项的值列表的SQL验证 */
  sqlValidation?: string;
  /** 状态1代表有效,0代表无效 默认为1 */
  validFlag?: string;
  /** 是否为系统初始Y 是 N 否 */
  systemFlag?: string;
  /** 0 公有可用     1私有可用 */
  usageModifier?: string;
  /** 子表集合 */
  sysProfileOptionValueList?: [];
}

/**
 * 获取主表数据
 * @param param queryParam 请求表格数据的参数
 * @returns list 表格数据、totalPage 总条数
 */
export function listSysProfileOptionByPage(param: QueryParamModel): Promise<ResponsePageData<SysProfileOptionDto>> {
  return request.post(`${basePath}/search-main-by-page/v1`, param);
}

/**
 * 根据id加载主表数据
 * @param id 被编辑数据id
 * @returns 该行数据信息
 */
export function getSysProfileOption(id: string): Promise<ResponseBaseData<SysProfileOptionDto>> {
  return request.get(`${basePath}/get-main/${id}/v1`);
}

/**
 * 添加-保存表单数据
 * @param form SysProfileOptionDto
 * @returns 新添加的数据
 */
export function saveSysProfileOption(form: SysProfileOptionDto): Promise<ResponseBaseData<any>> {
  return request.post(`${basePath}/save-main/v1`, form);
}

/**
 * 编辑-更新表单数据
 * @param form SysProfileOptionDto
 * @returns 编辑后的数据
 */
export function updateSysProfileOption(form: SysProfileOptionDto): Promise<ResponseBaseData<any>> {
  return request.put(`${basePath}/update-main/v1`, form);
}

/**
 * 根据id集合删除数据
 * @param ids 要删除的数据id集合
 * @returns 删除成功或失败的
 */
export function delSysProfileOption(ids: [string]): Promise<ResponseBaseData<any>> {
  return request.delete(`${basePath}/delete-main-by-ids/${ids}/v1`);
}

/**
 * 获取通用代码
 * @param params lookupParams 通用代码字段
 * @returns validFlagList 有效标识列表、sysApplicationIdList 应用ID列表、usageModifierList 使用级别列表
 */
export function getAllLookUpData(params) {
  return request.post('/appsys/lookup/LookupRest/getAllLookUpData/v1', params);
}

/** 配置文件代码唯一性校验 */
export function checkProfileCode(param: any): Promise<ResponseBaseData<any>> {
  return request.post(`${basePath}/validateProfileCode/v1`, param);
}

/**
 * Excel导出
 * @param ids 导出数据的id集合
 * @returns 导出生成的xml文件
 */
export function exportExcel(ids: any) {
  const downloadData = {
    url: `${basePath}/export-xml/v1`,
    data: ids,
    method: 'post'
  } as downloadParam;
  return download(downloadData);
}
